package jsd2302.src.socker;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 聊天室的客户端
 * */
public class Server {
    private ServerSocket serverSocket;


    public Server()  {

        try {
            /*
            如果端口被其他程序占用，则会发生异常
            1.更换端口号
            2.杀死占用该端口的进程（通常发生在服务器端启动两次导致的情况下）
             */
            System.out.println("正在启动服务端....");
            serverSocket=new ServerSocket(8088);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void start(){

        /*
        ServerSocket提供的重要方法；
        Socket accept()
        用于接受客户端的连接，并返回一个Socket实例与连接的客户端交互
        该方法是一个阻塞方法，调用后程序会“卡住”，直到一个客户端连接为止
         */
        try {
            while(true){
            System.out.println("等待客户端连接.....");
            Socket socket =serverSocket.accept();
            System.out.println("一个客户端连接上了");

            InputStream in=socket.getInputStream();
            InputStreamReader isr=new InputStreamReader(in);
            BufferedReader br=new BufferedReader(isr);
            String message;
            while((message=br.readLine())!=null){
                    System.out.println("客户端说"+message);
                }
            }







        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Server server=new Server();
        server.start();
    }
}
